package com.money.tracker.auth.enums;

import cn.hutool.core.lang.Validator;
import com.money.tracker.auth.entity.SysMenu;
import com.money.tracker.common.constant.MoneyTrackerConstant;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.apache.commons.lang3.StringUtils;

/**
 * <p>
 *
 * <p>
 *
 * @author zhangshuai
 * &#064;@date 2024/10/07
 */
@Getter
@AllArgsConstructor
public enum FrameEnum {
    /**
     * 不是外链
     */
    NO_FRAME(1, "否"),
    /**
     *
     */
    YES_FRAME(0, "是");

    private final Integer code;
    private final String desc;

    /**
     * 不是外链
     *
     * @param code
     * @return {@link Boolean }
     */

    public static Boolean noFrame(Integer code) {
        return NO_FRAME.getCode().equals(code);
    }

    /**
     * 是否为内链组件
     *
     * @param menu
     * @return {@link Boolean }
     */

    public static Boolean isInnerLink(SysMenu menu) {
        return menu.getParentId().intValue() != 0 && noFrame(menu.getIsFrame()) && Validator.isUrl(menu.getPath());
    }

    /**
     * 获取组件信息
     *
     * @param menu 菜单信息
     * @return 组件信息
     */
    public static String getComponent(SysMenu menu) {
        if (StringUtils.isNotEmpty(menu.getComponent()) && !MenuTypeEnum.isMenuFrame(menu)) {
            return menu.getComponent();
        }
        if (StringUtils.isEmpty(menu.getComponent()) && FrameEnum.isInnerLink(menu)) {
            return MoneyTrackerConstant.INNER_LINK;
        }
        if (StringUtils.isEmpty(menu.getComponent()) && MenuTypeEnum.isParentView(menu)) {
            return MoneyTrackerConstant.PARENT_VIEW;
        }
        return MoneyTrackerConstant.LAYOUT;
    }


}
